package com.earthchen;

/**
 * 简单选择排序
 *
 * @author earthchen
 * @date 2018/8/10
 **/
public class SelectSort {

    /**
     * 常用于取序列中最大最小的几个数时。
     * <p>
     * (如果每次比较都交换，那么就是交换排序；如果每次比较完一个循环再交换，就是简单选择排序。)
     * <p>
     * 遍历整个序列，将最小的数放在最前面。
     * <p>
     * 遍历剩下的序列，将最小的数放在最前面。
     * <p>
     * 重复第二步，直到只剩下一个数。
     *
     * @param a
     */
    public static void sort(int[] a) {
        int len = a.length;
        //循环次数
        for (int i = 0; i < len; i++) {
            int value = a[i];
            int position = i;
            //找到最小的值和位置
            for (int j = i + 1; j < len; j++) {
                if (a[j] < value) {
                    value = a[j];
                    position = j;
                }
            }
            //进行交换
            a[position] = a[i];
            a[i] = value;
        }
    }
}
